package action.RDD基本转换操作3

import org.apache.spark.{SparkConf, SparkContext}

/**
  * def randomSplit(weights: Array[Double], seed: Long = Utils.random.nextLong): Array[RDD[T]]
  *
  * 该函数根据weights权重，将一个RDD切分成多个RDD。
  *
  * 该权重参数为一个Double数组
  *
  * 第二个参数为random的种子，基本可忽略。
  *
  * @author wdmcode@aliyun.com
  * @version 1.0.0
  * @date 2018/11/8
  */
object SparkRandomSplit {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf()
    conf.setAppName("SparkParallelize")
    conf.setMaster("local[2]")

    val spark = new SparkContext(conf)

    val rdd = spark.parallelize(1 to 10, 3)

    var splitRDD = rdd.randomSplit(Array(4.0,1.0,3.0,2.0))

    println(splitRDD.size)
    println("splitRDD(0).size=" + splitRDD(0).count())
    println("splitRDD(1).size=" + splitRDD(1).count())
    println("splitRDD(2).size=" + splitRDD(2).count())
    println("splitRDD(3).size=" + splitRDD(3).count())

    splitRDD(0).foreach(s => println("splitRDD(1)" + s))
    splitRDD(1).foreach(s => println("splitRDD(2)" + s))
    splitRDD(2).foreach(s => println("splitRDD(3)" + s))
    splitRDD(3).foreach(s => println("splitRDD(4)" + s))
  }
}
